home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / ARASAN_S.ZIP / SNODE.H < prev    next >
C/C++ Source or Header  |  1994-02-24  |  1KB  |  68 lines

  1. // Copyright 1992-3 by Jon Dart. All Rights Reserved
  2.  
  3. // S_Node - base class
  4. // can be used to build a variety of linked data structures.
  5.  
  6. #ifndef S_NODE_H
  7. #define S_NODE_H
  8.  
  9. #include <stdlib.h>
  10. #include "pool.h"
  11.  
  12. template <class T>
  13. class S_Node
  14. {
  15.    public:
  16.      S_Node( const T &stuff ) :
  17.     contents(stuff), link(NULL) {
  18.      }
  19.      
  20.      virtual ~S_Node()
  21.      {
  22.      }
  23.  
  24.      S_Node( const S_Node & source ) 
  25.     :contents(source.contents), link(NULL)
  26.      {
  27.      }
  28.  
  29.      S_Node *Link() {
  30.     return link;
  31.      }
  32.  
  33.      void MakeLink(S_Node *t) {
  34.     link = t;
  35.      }
  36.  
  37.      T * Contents() {
  38.     return &contents;
  39.      }
  40.  
  41.      void Set_Contents( T *p ) {
  42.     contents = *p;
  43.      }
  44.  
  45.      void *operator new(size_t size)
  46.      {
  47.     return allocator.allocate(size);
  48.      }
  49.  
  50.      void operator delete( void *p )
  51.      {
  52.     allocator.free(p);
  53.      }
  54.  
  55.      static void freeAll(Boolean final = False)
  56.      {
  57.     allocator.freeAll(final);
  58.      }
  59.  
  60.    protected:
  61.      T contents;
  62.      S_Node *link;
  63.      static Pool allocator;
  64. };
  65.  
  66. #endif
  67.  
  68.